package com.hullbreach.rogue;

import org.andengine.entity.sprite.AnimatedSprite;
import org.andengine.opengl.texture.region.ITiledTextureRegion;
import org.andengine.opengl.vbo.VertexBufferObjectManager;

public abstract class GameObject extends AnimatedSprite {

	// ===========================================================
	// Constants
	// ===========================================================

	// ===========================================================
	// Fields
	// ===========================================================

	public int energy;
	public int speed;
	public int tileX;
	public int tileY;
	public Position position;
	
	// ===========================================================
	// Constructors
	// ===========================================================

	public GameObject(final float pX, final float pY, final ITiledTextureRegion pTiledTextureRegion, final VertexBufferObjectManager pVertexBufferObjectManager) {
		super(pX, pY, pTiledTextureRegion, pVertexBufferObjectManager);

	}

	// ===========================================================
	// Getter & Setter
	// ===========================================================

	// ===========================================================
	// Methods for/from SuperClass/Interfaces
	// ===========================================================

	@Override
	protected void onManagedUpdate(float pSecondsElapsed) {
		think();
		super.onManagedUpdate(pSecondsElapsed);
	}

	// ===========================================================
	// Methods
	// ===========================================================

	public abstract void think();
	
	//returns energy spent / cost
	public abstract int act();
	/*
	public void setPosition (Position p){
		if (getLevel() != null){
			getLevel().updateActorPosition(this, p);
		}
		position = p;
		
	}

	public Position getPosition(){
		return position;
	}
	*/
}